home *** CD-ROM | disk | FTP | other *** search
- ; ___________________________________________________________________________
- ; |*************************************************************************|
- ; |*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|
- ; |*| Set TAB to 15 for best readable file layout. |*| HiSoft DevPac 3.04 |*|
- ; |*|______________________________________________|*|____________________|*|
- ; |*************************************************************************|
- ; |*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|
- ; |*| |*| $Id: settings.i (28.04.01) |*|
- ; |*| ###### ###### |*| RhoSigma Source based on NDK 3.1 Includes 40.15 |*|
- ; |*| ## ## ## # |*| _________________________________________________ |*|
- ; |*| ## ## ## |*| |*|
- ; |*| ###### ## |*| Useful defines and extensions for NDK includes |*|
- ; |*| ## ## |*| |*|
- ; |*| ## ## # |*| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |*|
- ; |*| ## ###### |*| Copyright © 1998-2001 RhoSigma, Roland Heyder |*|
- ; |*| |*| All Rights Reserved. |*|
- ; |*|_______________|*|___________________________________________________|*|
- ; |*************************************************************************|
- ; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
-
- IFND RHOSIGMA_SETTINGS_I
- RHOSIGMA_SETTINGS_I SET 1
-
- IFND EXEC_MEMORY_I
- INCLUDE exec/memory.i
- ENDC
-
- ;** enhanced booleans **
-
- UPPER EQU 1 ; Signum- und Wahrheitswerte zur
- EQUAL EQU 0 ; Verwendung in Variablen des
- LOWER EQU -1 ; Typs BOOL
- FALSE = EQUAL
- TRUE = LOWER
-
- ;** exec/types **
-
- SINGLE MACRO ;(Label/A) ; Fließkomma-Typen
- \1 = SOFFSET ; DOUBLE bereits in types.i
- SOFFSET SET SOFFSET+4 ; definiert
- ENDM
-
- EXTEND MACRO ;(Label/A)
- \1 = SOFFSET
- SOFFSET SET SOFFSET+12
- ENDM
-
- PACKED MACRO ;(Label/A)
- \1 = SOFFSET
- SOFFSET SET SOFFSET+12
- ENDM
-
- CHARS MACRO ;(Label/A,Length/A/N) ; für String-Einbindungen
- \1 = SOFFSET ; bzw. Puffer in Strukturen
- SOFFSET SET SOFFSET+\2
- ENDM
-
- ;** UNION-Types **
-
- IFND USIZE ; wichtig um Assembler-Fehler
- USIZE SET 0 ; zu verhindern
- ENDC
-
- ; ACHTUNG !! - Jeweils beim letzten Element einer UNION muß das Schlüsselwort
- ; »END« angeben werden, damit der SOFFSET-Wert richtig erhöht wird.
-
- UNIBOOL MACRO ;(Label/A, END/K/S)
- \1 = SOFFSET
- IFLT USIZE-2
- USIZE SET 2
- ENDC
- IFC '\2','END'
- SOFFSET SET SOFFSET+USIZE
- USIZE SET 0
- ENDC
- ENDM
-
- UNIBYTE MACRO ;(Label/A, END/K/S)
- \1 = SOFFSET
- IFLT USIZE-1
- USIZE SET 1
- ENDC
- IFC '\2','END'
- SOFFSET SET SOFFSET+USIZE
- USIZE SET 0
- ENDC
- ENDM
-
- UNIUBYTE MACRO ;(Label/A, END/K/S)
- \1 = SOFFSET
- IFLT USIZE-1
- USIZE SET 1
- ENDC
- IFC '\2','END'
- SOFFSET SET SOFFSET+USIZE
- USIZE SET 0
- ENDC
- ENDM
-
- UNIWORD MACRO ;(Label/A, END/K/S)
- \1 = SOFFSET
- IFLT USIZE-2
- USIZE SET 2
- ENDC
- IFC '\2','END'
- SOFFSET SET SOFFSET+USIZE
- USIZE SET 0
- ENDC
- ENDM
-
- UNIUWORD MACRO ;(Label/A, END/K/S)
- \1 = SOFFSET
- IFLT USIZE-2
- USIZE SET 2
- ENDC
- IFC '\2','END'
- SOFFSET SET SOFFSET+USIZE
- USIZE SET 0
- ENDC
- ENDM
-
- UNISHORT MACRO ;(Label/A, END/K/S)
- \1 = SOFFSET
- IFLT USIZE-2
- USIZE SET 2
- ENDC
- IFC '\2','END'
- SOFFSET SET SOFFSET+USIZE
- USIZE SET 0
- ENDC
- ENDM
-
- UNIUSHORT MACRO ;(Label/A, END/K/S)
- \1 = SOFFSET
- IFLT USIZE-2
- USIZE SET 2
- ENDC
- IFC '\2','END'
- SOFFSET SET SOFFSET+USIZE
- USIZE SET 0
- ENDC
- ENDM
-
- UNILONG MACRO ;(Label/A, END/K/S)
- \1 = SOFFSET
- IFLT USIZE-4
- USIZE SET 4
- ENDC
- IFC '\2','END'
- SOFFSET SET SOFFSET+USIZE
- USIZE SET 0
- ENDC
- ENDM
-
- UNIULONG MACRO ;(Label/A, END/K/S)
- \1 = SOFFSET
- IFLT USIZE-4
- USIZE SET 4
- ENDC
- IFC '\2','END'
- SOFFSET SET SOFFSET+USIZE
- USIZE SET 0
- ENDC
- ENDM
-
- UNIFLOAT MACRO ;(Label/A, END/K/S)
- \1 = SOFFSET
- IFLT USIZE-4
- USIZE SET 4
- ENDC
- IFC '\2','END'
- SOFFSET SET SOFFSET+USIZE
- USIZE SET 0
- ENDC
- ENDM
-
- UNISINGLE MACRO ;(Label/A, END/K/S)
- \1 = SOFFSET
- IFLT USIZE-4
- USIZE SET 4
- ENDC
- IFC '\2','END'
- SOFFSET SET SOFFSET+USIZE
- USIZE SET 0
- ENDC
- ENDM
-
- UNIDOUBLE MACRO ;(Label/A, END/K/S)
- \1 = SOFFSET
- IFLT USIZE-8
- USIZE SET 8
- ENDC
- IFC '\2','END'
- SOFFSET SET SOFFSET+USIZE
- USIZE SET 0
- ENDC
- ENDM
-
- UNIEXTEND MACRO ;(Label/A, END/K/S)
- \1 = SOFFSET
- IFLT USIZE-12
- USIZE SET 12
- ENDC
- IFC '\2','END'
- SOFFSET SET SOFFSET+USIZE
- USIZE SET 0
- ENDC
- ENDM
-
- UNIPACKED MACRO ;(Label/A, END/K/S)
- \1 = SOFFSET
- IFLT USIZE-12
- USIZE SET 12
- ENDC
- IFC '\2','END'
- SOFFSET SET SOFFSET+USIZE
- USIZE SET 0
- ENDC
- ENDM
-
- UNIAPTR MACRO ;(Label/A, END/K/S)
- \1 = SOFFSET
- IFLT USIZE-4
- USIZE SET 4
- ENDC
- IFC '\2','END'
- SOFFSET SET SOFFSET+USIZE
- USIZE SET 0
- ENDC
- ENDM
-
- UNICPTR MACRO ;(Label/A, END/K/S)
- \1 = SOFFSET
- IFLT USIZE-4
- USIZE SET 4
- ENDC
- IFC '\2','END'
- SOFFSET SET SOFFSET+USIZE
- USIZE SET 0
- ENDC
- ENDM
-
- UNIFPTR MACRO ;(Label/A, END/K/S)
- \1 = SOFFSET
- IFLT USIZE-4
- USIZE SET 4
- ENDC
- IFC '\2','END'
- SOFFSET SET SOFFSET+USIZE
- USIZE SET 0
- ENDC
- ENDM
-
- UNIRPTR MACRO ;(Label/A, END/K/S)
- \1 = SOFFSET
- IFLT USIZE-2
- USIZE SET 2
- ENDC
- IFC '\2','END'
- SOFFSET SET SOFFSET+USIZE
- USIZE SET 0
- ENDC
- ENDM
-
- UNISTRUCT MACRO ;(Label/A, Length/A/N, END/K/S)
- \1 = SOFFSET
- IFLT USIZE-\2
- USIZE SET \2
- ENDC
- IFC '\3','END'
- SOFFSET SET SOFFSET+USIZE
- USIZE SET 0
- ENDC
- ENDM
-
- UNICHARS MACRO ;(Label/A, Length/A/N, END/K/S)
- \1 = SOFFSET
- IFLT USIZE-\2
- USIZE SET \2
- ENDC
- IFC '\3','END'
- SOFFSET SET SOFFSET+USIZE
- USIZE SET 0
- ENDC
- ENDM
-
- ;** Offset-Ausrichtungen **
-
- ALIGNFLOAT MACRO ;Offset für nächsten Fließkomma-Typen setzen
- SOFFSET SET (SOFFSET+1)&$fffffffe
- ENDM
-
- ALIGNQUADWORD MACRO ;Offset auf nächstes QuadWord setzen (8 Bytes)
- SOFFSET SET (SOFFSET+7)&$fffffff8
- ENDM
-
- ALIGNMEMBLOCK MACRO ;Offset auf nächstes vielfaches von MEM_BLOCKSIZE
- SOFFSET SET (SOFFSET+MEM_BLOCKMASK)&(~MEM_BLOCKMASK)
- ENDM
-
- ;** intuition **
-
- DATPOS_C EQU -1 ; Text zentrieren
- DATPOS_L EQU -2 ; Text linksbündig
- DATPOS_R EQU -3 ; Text rechtsbündig
-
- ;*** rhosigma / DATEXT() ***
- ;============================================================================
- ; Dieses Macro erstellt einen Teilstring des Parameterstrings der Intuition-
- ; Funktion »DisplayAlert()«. Wahlweise kann der Text automatisch zentriert,
- ; oder links- bzw. rechsbündig ausgerichtet werden.
- ;----------------------------------------------------------------------------
- ; Definiert: settings.i (Copyright © 1998-2001 RhoSigma, Roland Heyder)
- ;
- ; Schablone: xPos/A/N, yPos/A/N, Text/A, END/K/S
- ;
- ; Parameter: xPos --> x-Position des Textes,
- ; oder einer der oben definierten DATPOS-Werte
- ;
- ; yPos --> y-Position des Textes,
- ; Ausrichtung nach BaseLine des Fonts (topaz/8)
- ;
- ; Text --> der auszugebende Text selbst,
- ; in <..>, wenn Leerzeichen enthalten sind
- ;
- ; END --> Wird dieses Schlüsselwort angegeben, dann endet der
- ; Parameterstring an dieser Stelle, anderenfalls muß
- ; ein weiterer Teilstring (Macro-Aufruf) folgen.
- ;
- ; Bemerkung: Ein Beispiel für die Benutzung dieses Macros finden Sie in der
- ; Datei »demo/AlertDemo.ASM«.
- ;============================================================================
-
- DATEXT MACRO ;(xPos/A/N, yPos/A/N, Text/A, END/K/S)
- ;----------------------------------------------------
- IFEQ \1+(-DATPOS_C)
- dc.w DAz\@ ; X-Pos berechnet (zentriert)
- ELSEIF
- IFEQ \1+(-DATPOS_L)
- dc.w 12 ; X-Pos (linksbündig)
- ELSEIF
- IFEQ \1+(-DATPOS_R)
- dc.w DAr\@ ; X-Pos berechnet (rechtsbündig)
- ELSEIF
- dc.w \1 ; angegebene absolute X-Pos
- ENDC
- ENDC
- ENDC
- ; Mit »dc.w« wird hier sichergestellt, daß der ParamString auf
- ; einer geraden Adresse beginnt (wichtig für OS 1.3 und früher).
- ; Eine ungerade Zeichenanzahl des Teilstrings sorgt außerdem da-
- ; für, daß wir mit allen Koordinaten u. anderen Bytes zusammen
- ; letztlich auch wieder auf einer geraden Adresse ankommen, für
- ; die X-Pos des nächsten Teilstrings. Sollte der Text eine ge-
- ; rade Anzahl Zeichen haben, wird einfach ein Leerz. angehängt.
-
- dc.b \2 ; Y-Pos
- DAs\@ dc.b "\3" ; Text ohne 0-Byte
- DAe\@
- DAl\@ = (DAe\@-DAs\@) ; Länge der Zeichenkette
-
- DAz\@ = (640-(DAl\@*8))/2 ; X-Pos für Zentrierung
- DAr\@ = (640-(DAl\@*8))-12 ; X-Pos für rechtsbündig
-
- IFEQ (DAl\@&1) ; wenn gerade Zeichenanzahl
- dc.b " " ; dann ein Leerz. anhängen
- ENDC ; (wegen OS 1.3 u. früher)
-
- IFNC '\4','END'
- dc.b 0,1 ; Text-0-Byte u. Continue
- ELSEIF
- dc.b 0,0 ; Text-0-Byte u. ParamEnde
- ENDC
- ;----------------------------------------------------
- ENDM ;DATEXT
-
- ENDC ;settings.i
-